<?php
/**
 * @brief Klasa enycjna CalendatPeriod
 * 
 * Obiekty tej klasy reprezentują terminy dostaw towarów, które są zapisywane w 
 * kalendarzu. Istnieją dwa typy terminów dostaw:
 * - Globalne, dostepne dla wszystkich użytkowników. 
 * - Użytkownika, dostepne dla osoby która go zdefiniowała.
 */
class Application_Model_CalendarPeriod
{
    protected $_CalendarPeriod_id; /*!< Identyfikator terminu dostawy. */
    protected $_MarketEntity_id; /*!< Nazwa jednostki rynkowej która stworzyła termin. */
    protected $_name; /*!< Nazwa terminu dostawy. */
    protected $_periodType; /*!< Typ terminu dostawy. */
    protected $_startTime; /*!< Data rozpocznająca okres terminu dostawy. */
    protected $_endTime; /*!< Data kończąca okres terminu dostawy. */
    
    /**
     * @brief Konstruktor 
     * 
     * Przyjmuje tablicę znaków i na jej podstawie uzupełnia pola,
     * przy pomocy setOptions.
     * @param array $options 
     */
    public function __construct(array $options = null) {
        if (is_array($options)) {
            $this->setOptions($options);
        }
    }

    /**
     * @brief Metoda uzupełniająca pola na podstawie wejściowej tablicy.
     * 
     * @param array $options
     * @return Application_Model_CalendatPeriod
     */ 
    public function setOptions(array $options) {

        $methods = get_class_methods($this);

        foreach ($options as $key => $value) {

            $method = 'set' . ucfirst($key);

            if (in_array($method, $methods)) {

                $this->$method($value);
            }
        }
        return $this;
    }
    
    /**
     * @brief Metoda zwracająca identyfikator terminu dostaw.
     * 
     * @return String 
     */
    public function getCalendarPeriod_id() {
        return $this->_CalendarPeriod_id;
    }
    /**
     * @brief Metoda do ustawiania identyfikatora terminu dostaw.
     * 
     * @param type $_CalendarPeriod_id 
     */
    public function setCalendarPeriod_id($_CalendarPeriod_id) {
        $this->_CalendarPeriod_id = $_CalendarPeriod_id;
    }
    /**
     * @brief Metoda zwracająca nazwę powiązanej jednostki rynkowej.
     * 
     * @return String 
     */
    public function getMarketEntity_id() {
        return $this->_MarketEntity_id;
    }
    /**
     * @brief Metoda ustawiająca nazwę powiązanej jednostki rynkowej.
     * 
     * @param String $_MarketEntity_id 
     */
    public function setMarketEntity_id($_MarketEntity_id) {
        $this->_MarketEntity_id = $_MarketEntity_id;
    }
    /**
     * @brief Metoda zwracająca nazwę terminu dostawy.
     * 
     * @return String 
     */
    public function getName() {
        return $this->_name;
    }
    /**
     * @brief Metoda do ustawiania nazwy terminu dostawy. 
     * 
     * @param String $_name 
     */
    public function setName($_name) {
        $this->_name = $_name;
    }
    /**
     * @brief Metoda zwracająca typ okresu dostaw.
     * 
     * @return 'global' | 'userDefined'
     */
    public function getPeriodType() {
        return $this->_periodType;
    }
    /**
     * @brief Metoda ustawiająca typ okresu dostaw.
     * @param String $_periodType 
     */
    public function setPeriodType($_periodType) {
        $this->_periodType = $_periodType;
    }
    /**
     * @brief Metoda zwracająca  początku okresu terminu dostaw.
     *
     * @return String w róznych formatach. 
     */
    public function getStartTime() {
        return $this->_startTime;
    }
    /**
     * @brief Metoda ustawiająca datę początku okresu terminu dostaw.
     *
     * @param String $_startTime 
     */
    public function setStartTime($_startTime) {
        $this->_startTime = $_startTime;
    }
    /**
     * @brief Metoda zwracająca typ datę końca okresu terminu dostaw.
     *
     * @return String w róznych formatach. 
     */
    public function getEndTime() {
        return $this->_endTime;
    }
    /**
     * @brief Metoda ustawiająca datę końca okresu terminu dostaw.
     *
     * @param String $_endTime 
     */
    public function setEndTime($_endTime) {
        $this->_endTime = $_endTime;
    }


}

